package demo01;

/*
 *  创建多线程程序的第一种方式：创建Thread类的子类
 *  java.lang.Thread类：描述线程的类，如果需要实现多线程程序，就必须继承Thread类
 * 
 *  实现步骤：
 *      1. 创建一个Thread类的子类
 *      2. 在Thread类的子类中重写Thread类中的run方法，设置线程任务
 *      3. 在main方法中创建Thread类的子类对象
 *      4. 子类对象调用Thread类的start方法，开启新的线程，执行run方法
 *          public void start()：使该线程开始执行，Java虚拟机JVM会调用该线程的run方法
 *          结果是两个线程并发地运行：当前线程（主线程，main方法）和另一个线程（创建的新线程，执行其run方法）
 *          多次启动同一个线程是非法的，当一个线程结束执行后，不能再次重新启动
 *  java程序属于抢占式调度，哪个线程的优先级高，哪个线程优先执行；优先级相同，则会随机选择一个线程执行
 */
public class Demo02Thread {
    public static void main(String[] args) {
        MyThread mt = new MyThread(); // 3. 在main方法中创建Thread类的子类对象
        mt.start(); // 4. 子类对象调用Thread类的start方法，开启新的线程，执行run方法
        mt.run(); // 在主线程中调用MyThread类的run循环方法
        /*
         *  输出结果：main线程与mt线程并发执行，结果在两个线程间随机打印
         */
    }
}
